package com.example.exceldemo.utils.poi.v0;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class PoiExcelUtilsV0 {
    /**
     * 垂直居中加背景色
     *
     * @param workbook
     * @return org.apache.poi.ss.usermodel.CellStyle
     * @author jcl
     * @date 2024/5/29 21:23
     */
    public static CellStyle cellStyleHead(XSSFWorkbook workbook) {
        // 创建居中垂直
        CellStyle cellStyle = cellStyleCenter(workbook);
        // 设置背景填充样式
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        // 设置背景颜色
        cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        // 创建字体样式
        Font font = workbook.createFont();
        //字体加粗
        font.setBold(true);
        cellStyle.setFont(font);
        return cellStyle;
    }


    /**
     * 垂直居中-保留2位小数
     *
     * @param workbook
     * @return org.apache.poi.ss.usermodel.CellStyle
     * @author jcl
     * @date 2024/5/29 21:23
     */
    public static CellStyle cellStyleDoubleCenter(XSSFWorkbook workbook) {
        // 创建居中垂直
        CellStyle cellStyle = cellStyleCenter(workbook);
        // 保留2位小数
        CreationHelper createHelper = workbook.getCreationHelper();
        cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("0.00"));
        return cellStyle;
    }

    /**
     * 垂直居中-时间格式
     *
     * @author jcl
     * @date 2024/5/29 12:20
     */
    public static CellStyle cellStyleDataFormat(XSSFWorkbook workbook) {
        // 创建居中垂直
        CellStyle cellStyle = cellStyleCenter(workbook);
        // 设置时间格式
        cellStyle.setDataFormat(workbook.createDataFormat().getFormat("yyyy-MM-dd"));
        return cellStyle;
    }

    /**
     * 垂直居中
     *
     * @param workbook
     * @return org.apache.poi.ss.usermodel.CellStyle
     * @author jcl
     * @date 2024/5/29 21:23
     */
    public static CellStyle cellStyleCenter(XSSFWorkbook workbook) {
        // 创建一个单元格样式
        CellStyle cellStyleCenter = workbook.createCellStyle();
        // 设置水平居中
        cellStyleCenter.setAlignment(HorizontalAlignment.CENTER);
        // 设置垂直居中
        cellStyleCenter.setVerticalAlignment(VerticalAlignment.CENTER);
        return cellStyleCenter;
    }

    /**
     * 备注的样式
     *
     * @param workbook
     * @return org.apache.poi.ss.usermodel.CellStyle
     * @author jcl
     * @date 2024/5/29 9:20
     */
    public static CellStyle cellStyleRemarks(XSSFWorkbook workbook) {
        // 创建字体样式
        Font font = workbook.createFont();
        // 设置字体颜色为红色
        font.setColor(Font.COLOR_RED);
        //字体加粗
        font.setBold(true);
        // 创建单元格样式
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setFont(font);
        cellStyle.setWrapText(true);
        return cellStyle;
    }

    /**
     * 设置备注
     *
     * @param cellStyle
     * @param sheet
     * @param rows
     * @author jcl
     * @date 2024/5/29 12:14
     */
    public static void setRemarks(CellStyle cellStyle, XSSFSheet sheet, String remarks, Integer rows) {
        // 自定义样式应用于单元格
        Row row = sheet.createRow(rows + 2);
        Cell cell = row.createCell(0);
        cell.setCellStyle(cellStyle);
        cell.setCellValue(remarks);
        // 合并单元格
        sheet.addMergedRegion(new CellRangeAddress(rows + 2, rows + 10, 0, 7));
    }

}
